Welcome to pandas!

8.2 列数据转行方向(列为分层索引转换)

提供了一个列是分层索引的表格,

import pandas as pd

df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.02 列数据转行方向(列为分层索引转换).xlsx" , header =[ 0,1 ], index_col = 0 )

#导入时需指定索引,不然转换后会出现分组

print (df)

df1=df.stack(level=( "年份","半年" )).to_frame().reset_index().rename(columns={0: "数量" })

print (df1)

df2=df1.groupby( "年份" ).agg(

总数量=( "数量","sum" ),

平均=( "数量","mean" )

).reset_index()

print (df2)

返回:

年份 2018年 2019年
半年 上半年 下半年 上半年 下半年
姓名
张三 1101 1200 915 1174
李四 886 1146 649 905
许流子 870 583 776 628
郭鬼子 620 947 1000 529

姓名 年份 半年 数量
0 张三 2018年 上半年 1101
1 张三 2018年 下半年 1200
2 张三 2019年 上半年 915
3 张三 2019年 下半年 1174
4 李四 2018年 上半年 886
5 李四 2018年 下半年 1146
6 李四 2019年 上半年 649
7 李四 2019年 下半年 905
8 许流子 2018年 上半年 870
9 许流子 2018年 下半年 583
10 许流子 2019年 上半年 776
11 许流子 2019年 下半年 628
12 郭鬼子 2018年 上半年 620
13 郭鬼子 2018年 下半年 947
14 郭鬼子 2019年 上半年 1000
15 郭鬼子 2019年 下半年 529

年份 总数量 平均
0 2018年 7353 919.125
1 2019年 6576 822.000